7.2.2 虚拟机的额外开销

基于前文所述内容,接下来会着重探讨Hypervisor模型的一个主要问题。

首先我们的目标是在一台物理机上运行4个业务相关应用。每种模型示例中都安装了一个操作系统或者Hypervisor(一种针对虚拟机高度优化后的操作系统)。截至目前,两个模型还很相似,但是也就到此为止了。

虚拟机模型将 底层硬件资源 划分到虚拟机当中。每个虚拟机都是包含了虚拟CPU、虚拟RAM、虚拟磁盘等资源的一种软件结构。因此,每个虚拟机都需要有自己的操作系统来声明、初始化并管理这些虚拟资源。但不幸的是,操作系统本身是有其额外开销的。例如,每个操作系统都消耗一点CPU、一点RAM、一点存储空间等。每个操作系统都需要独立的许可证,并且都需要打补丁升级,每个操作系统也都面临被攻击的风险。通常将这种现象称作 OS Tax 或者 VM Tax ,每个操作系统都占用一定的资源。

容器模型具有在宿主机操作系统中运行的单个内核。在一台主机上运行数十个甚至数百个容器都是可能的——容器共享一个操作系统/内核。这意味着只有一个操作系统消耗CPU、RAM和存储资源,只有一个操作系统需要授权,只有一个操作系统需要升级和打补丁。同时,只有一个操作系统面临被攻击的风险。简言之,就是只有一份OS损耗!

在上述单台机器上只需要运行4个业务应用的场景中,也许问题尚不明显。但当需要运行成百上千应用的时候,就会引起质的变化。

另一个值得考虑的事情是启动时间。因为容器并不是完整的操作系统,所以其启动要远比虚拟机快。切记,在容器内部并不需要内核,也就没有定位、解压以及初始化的过程——更不用提在内核启动过程中对硬件的遍历和初始化了。这些在容器启动的过程中统统都不需要!唯一需要的是位于下层操作系统的共享内核是启动了的!最终结果就是,容器可以在1s内启动。唯一对容器启动时间有影响的就是容器内应用启动所花费的时间。

这就是容器模型要比虚拟机模型简洁并且高效的原因了。使用容器可以在更少的资源上运行更多的应用,启动更快,并且支付更少的授权和管理费用,同时面对未知攻击的风险也更小。还有什么理由不喜欢容器呢!

除了上述的理论基础之外,接下来请跟随本书一起使用容器完成一些实战。

results matching ""

    No results matching ""